/*
 * 现在我们将开发一个内容字段。就像内容部件开发一样，我们将从创建模型类开始。
 * 我们想要存储颜色名称和实际的十六进制颜色值，所以我们需要两个字符串。要测试这个，
 * 请在仪表板上将此字段附加到内容部件或内容类型（如果需要，可以创建新的）。
 *
 * 按照惯例，我们将这些对象放在Fields文件夹中。
 *
 * 要了解有关内容字段的更多信息，请参阅：
 * https://docs.orchardcore.net/en/latest/docs/reference/modules/ContentFields/
 *
 * 主要功能：
 * - 定义自定义颜色字段
 * - 存储颜色名称和十六进制值
 * - 支持内容字段的扩展
 * - 提供可重用的颜色字段组件
 */

using OrchardCore.ContentManagement;

namespace Lombiq.TrainingDemo.Fields;

/// <summary>
/// 颜色字段 - 自定义内容字段
/// 
/// 主要用途：
/// - 定义自定义颜色字段
 /* - 存储颜色名称和十六进制值
 * - 支持内容字段的扩展
 * - 提供可重用的颜色字段组件
 * 
 * 使用场景：
 * - 在内容类型中添加颜色选择功能
 * - 存储用户定义的颜色信息
 * - 支持颜色字段的索引和查询
 * - 提供颜色字段的显示和编辑界面
 * 
 * 设计原因：
 * - 扩展Orchard Core的内容字段系统
 * - 提供专门的颜色数据存储
 * - 支持颜色字段的完整生命周期管理
 * - 实现可重用的颜色字段组件
 * 
 * 设计模式：
 * - 继承模式：继承ContentField基类
 * - 属性模式：使用简单属性存储数据
 * - 注册模式：在服务提供程序中注册字段
/// </summary>
// 您还需要在服务提供程序中注册此类（请参阅：Startup.cs）。
 */
public class ColorField : ContentField
{
    /// <summary>
    /// 颜色值 - 存储颜色的十六进制值
    /// 
    /// 功能说明：
    /// - 存储用户选择的颜色十六进制值
    /// - 支持标准的十六进制颜色格式（如#FF0000）
    /// - 用于在界面上显示和编辑颜色
    /// 
    /// 示例值：
    /// - "#FF0000" - 红色
    /// - "#00FF00" - 绿色
    /// - "#0000FF" - 蓝色
    /// </summary>
    public string Value { get; set; }

    /// <summary>
    /// 颜色名称 - 用户提供的颜色名称
    /// 
    /// 功能说明：
    /// - 存储用户为颜色提供的描述性名称
    /// - 仅用于演示目的
    /// - 稍后将进行索引
    /// 
    /// 示例值：
    /// - "Fire Red" - 火红色
    /// - "Ocean Blue" - 海洋蓝
    /// - "Forest Green" - 森林绿
    /// </summary>
    public string ColorName { get; set; }
}

// 不要忘记在Startup.cs静态构造函数中注册您的内容字段和相关的视图模型，
// 这样这些就可以在Liquid标记中访问。

// 下一站：Drivers/ColorFieldDisplayDriver
